package com.nowcoder.community.dao;

import com.nowcoder.community.entity.DiscussPost;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author xiexu
 * @create 2022-06-02 16:59
 */
@Mapper
public interface DiscussPostMapper {

    /**
     * 多功能查询所有帖子（也可以根据用户id查询用户创建的帖子，也可以实现分页功能）
     *
     * @param userId    用户id，传入0表示查询所有用户的所有帖子
     * @param offset    这一页的起始行号
     * @param limit     这一页最多显示多少条数据
     * @param orderMode 0表示按原来的方式排序，1表示按热度进行排序
     * @return
     */
    List<DiscussPost> selectDiscussPosts(int userId, int offset, int limit, int orderMode);

    List<DiscussPost> selectDiscussPosts1(int userId, int offset, int limit);

    /**
     * 多功能查询帖子的行数（也可以根据用户id查询用户创建的帖子行数）
     *
     * @param userId 传入0表示查询所有帖子的总行数
     * @return
     * @Param 注解用于给参数取别名，如果只有一个参数，并且在<if>里使用，则必须取别名
     */
    int selectDiscussPostRows(@Param("userId") int userId);

    /**
     * 插入帖子的方法
     *
     * @param discussPost
     * @return
     */
    int insertDiscussPost(DiscussPost discussPost);

    /**
     * 根据帖子id查询帖子信息
     *
     * @param id
     * @return
     */
    DiscussPost selectDiscussPostById(int id);

    /**
     * 更新帖子评论数量
     *
     * @param id           帖子id
     * @param commentCount 评论数量
     * @return
     */
    int updateCommentCount(int id, int commentCount);

    /**
     * 根据id修改帖子的类型
     *
     * @param id   帖子id
     * @param type
     * @return
     */
    int updateType(int id, int type);

    /**
     * 根据id修改帖子的状态
     *
     * @param id     帖子id
     * @param status
     * @return
     */
    int updateStatus(int id, int status);

    /**
     * 更新帖子的分数
     *
     * @param id    帖子id
     * @param score
     * @return
     */
    int updateScore(int id, double score);

}
